//used for reading file stream
#include <fstream>
//used for defining tree topology
#include <string>
#include <sstream>
//used initially as a container for the tree before converting to static array
#include <vector>
#include <map>
#include <queue>
//holds definition for node
#include "node_class.h"
#include "node_struct.h"
using namespace std;

#ifndef __TREECLASS_H__
#define __TREECLASS_H__

class Tree {
public:
	map<string, string> sequences;
	//map<char, float> stationaryProbabilities;	
	float stationaryProbabilities[4];
	Node** phylogenyNodes;
	void CreateTreeFromFile(string* treePath);
	cNode* cudaNodeArray(int siteIdx);
	int length;
	int sequenceLength;
private:
	vector<Node*> nodeVector;
	Node* RecurseStringTopology(string* treeString);
	int MapTree(Node* node, int parent);
};
#endif